package com.htjc.integral.conversion.inner.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import com.htjc.integral.conversion.inner.service.InvokeBuildOuterService;
import com.htjc.integral.conversion.inner.service.InvokeConsService;
import com.htjc.integral.conversion.inner.util.JsonUtil;
import com.htjc.integral.conversion.inner.util.ResultModel;
import com.htjc.integral.conversion.inner.util.StringUtil;
import com.htjc.integral.conversion.inner.util.enums.AccountReturn;

import lombok.extern.slf4j.Slf4j;

@Slf4j(topic = "jfLog")
@RestController
@RequestMapping("/conversionInvokeCons")
public class InvokeConsController {

	@Autowired
	public InvokeConsService invokeConsService;
	//强隔离
	@Autowired
	public InvokeBuildOuterService invokeBuildOuterService;
	
	/**
	 * 积分流入-户号
	 * @param params
	 * @return
	 */
	@RequestMapping(value ="/insertConsQuery",produces = {"text/json;charset=UTF-8;", "application/json;"})
	public String insertConsQuery(@RequestBody String params) {
		log.info(">>>>>>>>>>>------积分内网户号余额流入服务开始------<<<<<<<<<<<,参数={}", params);
		if (StringUtil.isNull(params)) {
			log.info(">>>>>>>>>>>------积分内网户号余额流入服务异常------<<<<<<<<<<<,参数为空");
			return JSONObject.parseObject(JsonUtil.bean2json(ResultModel.AccountReturnError(AccountReturn.ACCOUNT_ERROR))).toString(); 
		}
		String result = null;
		try {
			//户号部分已做了参数校验,透传不再重复校验
			JSONObject jsonObject = JSONObject.parseObject(params);
			result = invokeConsService.addConsBalance(jsonObject);
		} catch (Exception e) {
			log.info(">>>>>>>>>>>------积分内网户号余额流入服务异常------<<<<<<<<<<<,异常信息={}", e);
			return JSONObject.parseObject(JsonUtil.bean2json(ResultModel.AccountReturnError(AccountReturn.ACCOUNT_ERROR))).toString();
		}
		log.info(">>>>>>>>>>>------积分内网户号余额流入服务完成------<<<<<<<<<<<,出参={}", result);
		return result;
	}
	
	/**
	 * 积分划转-户号
	 * @param params
	 * @return
	 */
	@RequestMapping(value = "/transferConsBalance", produces = {"text/json;charset=UTF-8;", "application/json;"})
	public String transferConsBalance(@RequestBody String params) {
		log.info(">>>>>>>>>>>------积分内网户号余额划转服务开始------<<<<<<<<<<<,参数={}", params);
		if (StringUtil.isNull(params)) {
			log.info(">>>>>>>>>>>------积分内网户号余额划转服务异常------<<<<<<<<<<<,参数为空");
			return JSONObject.parseObject(JsonUtil.bean2json(ResultModel.AccountReturnError(AccountReturn.ACCOUNT_ERROR))).toString();
		}
		String result = null;
		try {
			//户号部分已做了参数校验,透传不再重复校验
			JSONObject jsonObject = JSONObject.parseObject(params);
			result = invokeBuildOuterService.conversionIntegral(jsonObject).toJSONString();
		} catch (Exception e) {
			log.info(">>>>>>>>>>>------积分内网户号余额划转服务异常------<<<<<<<<<<<,错误信息={}", e);
			return JSONObject.parseObject(JsonUtil.bean2json(ResultModel.AccountReturnError(AccountReturn.ACCOUNT_ERROR))).toString();
		}
		log.info(">>>>>>>>>>>------积分内网户号余额划转服务完成------<<<<<<<<<<<,出参={}", result);
		return result;
	}
	
	
	
	/**
	 * 积分查询-户号
	 * @param params
	 * @return
	 */
	@RequestMapping(value = "/queryConsBalance", produces = {"text/json;charset=UTF-8;", "application/json;"})
	public String queryConsBalance(@RequestBody String params) {
		log.info(">>>>>>>>>>>------积分内网户号余额查询服务开始------<<<<<<<<<<<,参数={}", params);
		if (StringUtil.isNull(params)) {
			log.info(">>>>>>>>>>>------积分内网户号余额查询服务异常------<<<<<<<<<<<,参数为空");
			return JSONObject.parseObject(JsonUtil.bean2json(ResultModel.AccountReturnError(AccountReturn.ACCOUNT_ERROR))).toString();
		}
		String result = null;
		try {
			//户号部分已做了参数校验,透传不再重复校验
			JSONObject jsonObject = JSONObject.parseObject(params);
//			result = invokeConsService.queryConsBalance(jsonObject);
			result = invokeBuildOuterService.queryIntegral(jsonObject).toJSONString();
		} catch (Exception e) {
			log.info(">>>>>>>>>>>------积分内网户号余额查询服务异常------<<<<<<<<<<<,错误信息={}", e);
			return JSONObject.parseObject(JsonUtil.bean2json(ResultModel.AccountReturnError(AccountReturn.ACCOUNT_ERROR))).toString();
		}
		log.info(">>>>>>>>>>>------积分内网户号余额查询服务完成------<<<<<<<<<<<,出参={}", result);
		return result;
	}
}

























